package com.hsyt.pms.security.dao;


import com.hsyt.pms.security.entity.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @ClassName: UserDao
 * @Description: 用户持久化层
 * @author 王勇琳
 * @date 2017年7月5日 下午5:24:28
 */
@Mapper
public interface UserDao {
	
	/**
	 * 根据user_name查询用户详情
	 * @author 王勇琳
	 * @date 2017年7月5日 下午5:24:53
	 * @param userName
	 * @return
	 */
	UserDetailVo findUserByUserName(String userName);
	
	/**
	 * 根据用户手机号phone_no查询用户详情
	 * @author 王勇琳
	 * @date 2017年7月5日 下午5:25:14
	 * @param phoneNo
	 * @return
	 */
	UserDetailVo findUserByPhoneNo(Long phoneNo);
	
	/**
	 * 根据用户邮箱email查询用户详情
	 * @author 王勇琳
	 * @date 2017年7月5日 下午5:25:30
	 * @param email
	 * @return
	 */
	UserDetailVo findUserByEmail(String email);
	
	/**
	 * 根据用户名user_name更新用户手机号phone_no
	 * @author 王勇琳
	 * @date 2017年7月5日 下午5:25:58
	 * @param dto
	 */
	void updatePhoneNoByUserName(UserDetailDto dto);
	
	/** 通过主键Id更新用户
	 * @author: caijg@hsyuntai.com
	 * @date: 2017年8月17日 下午1:53:25
	 * @param sysUser
	 * @return    
	 */
	 int updateUserbyUserIdSelective(SysUser sysUser);
	
	/** 新增用户
	 * @author: caijg@hsyuntai.com
	 * @date: 2017年8月17日 下午1:54:34
	 * @param sysUser  
	 */
	 int insertUserSelective(SysUser sysUser);

	/**根据查询参数返回用户列表
	* @author: caijg@hsyuntai.com
	* @date: 2017年8月18日 上午9:36:42
	* @return  
	*/
	List<SysUser> queryUsersByDto(UserQueryDto dto);

	/** 根据查询参数返回用户总数
	* @author: caijg@hsyuntai.com
	* @date: 2017年8月18日 上午9:37:54
	* @return  
	*/
	Long countQueryUserByDto(UserQueryDto dto);
	
	/**
	 * @Title: cleanDisabledAuthority
	 * @Description:清除不在ids中的角色权限
	 * @param userId
	 * @param ids
	 */
	void cleanDisabledAuthority(@Param("userId") Long userId, @Param("ids") Long[] ids);
	
	/**
	 * @Title: roleAuthorize
	 * @Description: 给用户添加ids中的角色权限
	 */
	void roleAuthorize(List<UserRoleRefDto> dtos);
	
	/**
	 * 根据用户id获取用户详细信息
	 * @param userId
	 * @return
	 */
	SysUser findUserDetailById(Long userId);
	
}

